package cn.com.api.service;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import cn.com.api.entity.ApiT_log;
import cn.com.api.entity.ApiType;
import cn.com.util.*;

@Service
public interface ApiTypeService {

	public List<ApiType> getApiTypeListPage(PageInfo p);

	public List<Map<String, Object>> getGoodsType(Object cBelong);

	// 首页12个菜单按钮 -传0
	public List<ApiType> getTypesByCBelong(Integer cBelong);

	// 根级分类 -传0
	public List<ApiType> getTypesByCGrade(Integer cGrade);

	// 获取系统三级分类
	public List<ApiType> getThirdTypes();

	// 获取系统二级分类
	public List<ApiType> getSecondTypes();

	// 获取系统一级分类
	public List<ApiType> getFirstTypes();

	public void searchTypeGoods(Map<String, Object> map,
			Map<String, String> params);

	// 根据模块查询
	public List<ApiType> findTypesByCmod(String c_mod);

	// 商家分类列表
	public List<ApiType> findTypes4Shops();

	// 查询二级菜单
	public List<ApiType> gettwoType(@Param("c_id") Integer c_id);

	// 查询三级级菜单
	public List<ApiType> getthreeType(@Param("c_id") Integer c_id);

	public Map<String, Object> searShengXian();

	// 根据id查看
	public ApiType findTypeById(@Param("c_code") Integer c_code);

	// 添加
	public void insertType(ApiType type);

	// 添加erp商品接口
	public void insertType4erp(ApiType type);

	// 修改
	public void updateType(ApiType type);

	// 删除
	public int deleteType(@Param("c_code") Integer c_code);

	// 查询商家的商品分类
	public List<ApiType> getTypesByShopId(Integer c_sid);

	/**
	 * 得到某个商店的分类
	 * 
	 * @param c_sid
	 *            // 商店 id
	 * @return
	 */
	public List<ApiType> getShopTypes(int c_sid);

	public List<Integer> getGoodTypesByParentType(int goods_type);

	/**
	 * 得到非自营的子类
	 * 
	 * @param parentTypeId
	 * @return
	 */
	public List<Integer> getNoZiYingSubTypes(int parentTypeId);

	/**
	 * 得到自营的子类
	 * 
	 * @param parentTypeId
	 * @return
	 */
	public List<Integer> getZiYingSubTypes(int parentTypeId);

	// 根据商品类型获取商品总数
	public int getGoodsCountByTypeId(Integer type_id);

	// 数据集
	public List<ApiType> findTypes();

	// 根据belong查询对应code
	public List<ApiType> bybelong(Integer c_belong);

	// 根据cName查找非自营
	public List<ApiType> bycnamefzyListPage(Map<String, Object> conditions,
			PageInfo pageInfo);

	// 根据cName查找自营
	public List<ApiType> bycnamezyListPage(Map<String, Object> conditions,
			PageInfo pageInfo);

	// 判断是否是外卖
	public int checkIsFoodTakeAway(Integer shopType);

	// 判断店铺类型 1-美食外卖 2-生活服务 3-其他
	public int getShopType(Integer shopType);

	// 获取非自营一级品类
	public List<ApiType> getBigTypes();

	// 获取自营一级品类
	public List<ApiType> getBigTypesZiYing();

	// 获取非自营品类
	public List<ApiType> getTypes();

	// 获取自营品类
	public List<ApiType> getTypesZiYing();

	// 非自营分页
	public List<ApiType> getfeizyListPage(PageInfo pageInfo);

	// 自营分页
	public List<ApiType> getzyListPage(PageInfo pageInfo);

	/**
	 * 得到二级分类
	 * 
	 * @param isZiying
	 * @return
	 */
	public List<ApiType> getSecondTyes(boolean isZiYing);

	/**
	 * 得到三级分类
	 * 
	 * @param isZiying
	 * @return
	 */
	public List<ApiType> getThirdTypes(boolean isZiYing);

	public ApiType getMeiShiTypeByShopId(String shop_id);

	/**
	 * 获取全部一到三级分类的信息集合
	 * */
	public List<Map<String, Object>> getAllGoodsTypes();

	public List<ApiType> getTypesByParent(Integer parentid) throws Exception;
}
